circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
↳ QTRS
↳ DependencyPairsProof
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
CIRC(circ(s, t), u) → CIRC(t, u)
CIRC(cons(a, s), t) → CIRC(s, t)
CIRC(cons(lift, s), circ(cons(lift, t), u)) → CIRC(s, t)
MSUBST(msubst(a, s), t) → CIRC(s, t)
CIRC(circ(s, t), u) → CIRC(s, circ(t, u))
CIRC(cons(lift, s), cons(a, t)) → CIRC(s, t)
CIRC(cons(a, s), t) → MSUBST(a, t)
MSUBST(msubst(a, s), t) → MSUBST(a, circ(s, t))
CIRC(cons(lift, s), circ(cons(lift, t), u)) → CIRC(cons(lift, circ(s, t)), u)
CIRC(cons(lift, s), cons(lift, t)) → CIRC(s, t)
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ QDPOrderProof
CIRC(circ(s, t), u) → CIRC(t, u)
CIRC(cons(a, s), t) → CIRC(s, t)
CIRC(cons(lift, s), circ(cons(lift, t), u)) → CIRC(s, t)
MSUBST(msubst(a, s), t) → CIRC(s, t)
CIRC(circ(s, t), u) → CIRC(s, circ(t, u))
CIRC(cons(lift, s), cons(a, t)) → CIRC(s, t)
CIRC(cons(a, s), t) → MSUBST(a, t)
MSUBST(msubst(a, s), t) → MSUBST(a, circ(s, t))
CIRC(cons(lift, s), circ(cons(lift, t), u)) → CIRC(cons(lift, circ(s, t)), u)
CIRC(cons(lift, s), cons(lift, t)) → CIRC(s, t)
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CIRC(cons(a, s), t) → CIRC(s, t)
CIRC(cons(lift, s), circ(cons(lift, t), u)) → CIRC(s, t)
CIRC(cons(lift, s), cons(a, t)) → CIRC(s, t)
CIRC(cons(a, s), t) → MSUBST(a, t)
CIRC(cons(lift, s), circ(cons(lift, t), u)) → CIRC(cons(lift, circ(s, t)), u)
CIRC(cons(lift, s), cons(lift, t)) → CIRC(s, t)
Used ordering: Polynomial interpretation [25]:
CIRC(circ(s, t), u) → CIRC(t, u)
MSUBST(msubst(a, s), t) → CIRC(s, t)
CIRC(circ(s, t), u) → CIRC(s, circ(t, u))
MSUBST(msubst(a, s), t) → MSUBST(a, circ(s, t))
POL(CIRC(x1, x2)) = x1 + x1·x2 + x2
POL(MSUBST(x1, x2)) = x1 + x1·x2 + x2
POL(circ(x1, x2)) = x1 + x1·x2 + x2
POL(cons(x1, x2)) = 1 + x1 + x2
POL(id) = 1
POL(lift) = 1
POL(msubst(x1, x2)) = x1 + x1·x2 + x2
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(id, s) → s
circ(s, id) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
msubst(a, id) → a
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
CIRC(circ(s, t), u) → CIRC(t, u)
MSUBST(msubst(a, s), t) → CIRC(s, t)
CIRC(circ(s, t), u) → CIRC(s, circ(t, u))
MSUBST(msubst(a, s), t) → MSUBST(a, circ(s, t))
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
CIRC(circ(s, t), u) → CIRC(t, u)
CIRC(circ(s, t), u) → CIRC(s, circ(t, u))
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
MSUBST(msubst(a, s), t) → MSUBST(a, circ(s, t))
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
From the DPs we obtained the following set of size-change graphs: